
<!DOCTYPE HTML>
<html lang="" >
    <head>
        <meta charset="UTF-8">
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <title>bind 函数重难点解析 · 高性能服务器开发 技术专栏</title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="description" content="">
        <meta name="generator" content="GitBook 3.2.3">
        <meta name="author" content="easy_coder">
        
        
    
    <link rel="stylesheet" href="../../gitbook/style.css">

    
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-chapter-fold/chapter-fold.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-search-pro/search.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-splitter/splitter.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-back-to-top-button/plugin.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-prism/prism.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-tbfed-pagefooter/footer.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-code/plugin.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-anchor-navigation-ex/style/plugin.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-fontsettings/website.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-theme-fexa/fexa.css">
                
            
        

    

    
        
    
        
    
        
    
        
    
        
    
        
    

        
    
    
    <meta name="HandheldFriendly" content="true"/>
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../gitbook/images/apple-touch-icon-precomposed-152.png">
    <link rel="shortcut icon" href="../../gitbook/images/favicon.ico" type="image/x-icon">

    
    <link rel="next" href="connect函数在阻塞和非阻塞模式下的行为.html" />
    
    
    <link rel="prev" href="./" />
    

    </head>
    <body>
        
<div class="book">
	<div class="header-inner">
		<!-- LOGO -->
		<div class="logo"></div>
		<span class="title"></span>

		<!-- Search -->
		
<div id="book-search-input" role="search">
    <input type="text" placeholder="Type to search" />
</div>


		<!-- Nav -->
		<ul class="header-nav">
			
		</ul>
	</div>

	<div class="book-summary">
		<div class="book-summary-title">文档目录</div>
		
		
		<nav role="navigation">
			


<ul class="summary">
    
    

    

    
        
        <li class="header">Part I</li>
        
        
    
        <li class="chapter " data-level="1.1" data-path="../../">
            
                <a href="../../">
            
                    
                    Introduction
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2" data-path="../C++必知必会的知识点/">
            
                <a href="../C++必知必会的知识点/">
            
                    
                    C++必知必会的知识点
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.2.1" data-path="../C++必知必会的知识点/如何成为一名合格的CC++开发者？.html">
            
                <a href="../C++必知必会的知识点/如何成为一名合格的CC++开发者？.html">
            
                    
                    如何成为一名合格的C/C++开发者？
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2" data-path="../C++必知必会的知识点/不定参数函数实现var_arg系列的宏.html">
            
                <a href="../C++必知必会的知识点/不定参数函数实现var_arg系列的宏.html">
            
                    
                    不定参数函数实现var_arg系列的宏
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.3" data-path="../C++必知必会的知识点/你一定要搞明白的C函数调用方式与栈原理.html">
            
                <a href="../C++必知必会的知识点/你一定要搞明白的C函数调用方式与栈原理.html">
            
                    
                    你一定要搞明白的C函数调用方式与栈原理
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.4" data-path="../C++必知必会的知识点/深入理解CC++中的指针.html">
            
                <a href="../C++必知必会的知识点/深入理解CC++中的指针.html">
            
                    
                    深入理解C/C++中的指针
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.5" data-path="../C++必知必会的知识点/详解C++11中的智能指针.html">
            
                <a href="../C++必知必会的知识点/详解C++11中的智能指针.html">
            
                    
                    详解C++11中的智能指针
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.6" data-path="../C++必知必会的知识点/C++17结构化绑定.html">
            
                <a href="../C++必知必会的知识点/C++17结构化绑定.html">
            
                    
                    C++17结构化绑定
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.7" data-path="../C++必知必会的知识点/C++必须掌握的pimpl惯用法.html">
            
                <a href="../C++必知必会的知识点/C++必须掌握的pimpl惯用法.html">
            
                    
                    C++必须掌握的pimpl惯用法
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.8" data-path="../C++必知必会的知识点/用VisualStudio调试Linux程序.html">
            
                <a href="../C++必知必会的知识点/用VisualStudio调试Linux程序.html">
            
                    
                    用Visual Studio调试Linux程序
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.9" data-path="../C++必知必会的知识点/如何使用VisualStudio管理和阅读开源项目代码.html">
            
                <a href="../C++必知必会的知识点/如何使用VisualStudio管理和阅读开源项目代码.html">
            
                    
                    如何使用Visual Studio管理和阅读开源项目代码
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.10" data-path="../C++必知必会的知识点/利用cmake工具生成VisualStudio工程文件.html">
            
                <a href="../C++必知必会的知识点/利用cmake工具生成VisualStudio工程文件.html">
            
                    
                    利用cmake工具生成Visual Studio工程文件
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.3" data-path="../多线程/">
            
                <a href="../多线程/">
            
                    
                    多线程
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.3.1" data-path="../多线程/后台C++开发你一定要知道的条件变量.html">
            
                <a href="../多线程/后台C++开发你一定要知道的条件变量.html">
            
                    
                    后台C++开发你一定要知道的条件变量
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.3.2" data-path="../多线程/整型变量赋值是原子操作吗？.html">
            
                <a href="../多线程/整型变量赋值是原子操作吗？.html">
            
                    
                    整型变量赋值是原子操作吗？
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

    
        
        <li class="divider"></li>
        
        
    
        <li class="chapter " data-level="2.1" data-path="./">
            
                <a href="./">
            
                    
                    网络编程
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter active" data-level="2.1.1" data-path="bind函数重难点解析.html">
            
                <a href="bind函数重难点解析.html">
            
                    
                    bind 函数重难点解析
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="2.1.2" data-path="connect函数在阻塞和非阻塞模式下的行为.html">
            
                <a href="connect函数在阻塞和非阻塞模式下的行为.html">
            
                    
                    connect 函数在阻塞和非阻塞模式下的行为
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="2.1.3" data-path="select函数重难点解析.html">
            
                <a href="select函数重难点解析.html">
            
                    
                    select 函数重难点解析
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="2.1.4" data-path="Linuxepoll模型（含LT模式和ET模式详解）.html">
            
                <a href="Linuxepoll模型（含LT模式和ET模式详解）.html">
            
                    
                    Linux epoll 模型（含LT 模式和 ET 模式详解）
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="2.1.5" data-path="socket的阻塞模式和非阻塞模式.html">
            
                <a href="socket的阻塞模式和非阻塞模式.html">
            
                    
                    socket 的阻塞模式和非阻塞模式
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="2.1.6" data-path="非阻塞模式下send和recv函数的返回值.html">
            
                <a href="非阻塞模式下send和recv函数的返回值.html">
            
                    
                    非阻塞模式下 send 和 recv 函数的返回值
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="2.1.7" data-path="服务器开发通信协议设计介绍.html">
            
                <a href="服务器开发通信协议设计介绍.html">
            
                    
                    服务器开发通信协议设计介绍
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="2.1.8" data-path="TCP协议如何解决粘包、半包问题.html">
            
                <a href="TCP协议如何解决粘包、半包问题.html">
            
                    
                    TCP 协议如何解决粘包、半包问题
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="2.1.9" data-path="网络通信中收发数据的正确姿势.html">
            
                <a href="网络通信中收发数据的正确姿势.html">
            
                    
                    网络通信中收发数据的正确姿势
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="2.1.10" data-path="服务器端发数据时，如果对端一直不收，怎么办？.html">
            
                <a href="服务器端发数据时，如果对端一直不收，怎么办？.html">
            
                    
                    服务器端发数据时，如果对端一直不收，怎么办？
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

    
        
        <li class="divider"></li>
        
        
    
        <li class="chapter " data-level="3.1" data-path="../程序员必知必会的网络命令/">
            
                <a href="../程序员必知必会的网络命令/">
            
                    
                    程序员必知必会的网络命令
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="3.1.1" data-path="../程序员必知必会的网络命令/利用telnet命令发电子邮件.html">
            
                <a href="../程序员必知必会的网络命令/利用telnet命令发电子邮件.html">
            
                    
                    利用telnet命令发电子邮件
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.1.2" data-path="../程序员必知必会的网络命令/做Java或者C++开发都应该知道的lsof命令.html">
            
                <a href="../程序员必知必会的网络命令/做Java或者C++开发都应该知道的lsof命令.html">
            
                    
                    做Java或者C++开发都应该知道的lsof命令
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.1.3" data-path="../程序员必知必会的网络命令/Linux网络故障排查的瑞士军刀.html">
            
                <a href="../程序员必知必会的网络命令/Linux网络故障排查的瑞士军刀.html">
            
                    
                    Linux网络故障排查的瑞士军刀nc命令
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.1.4" data-path="../程序员必知必会的网络命令/Linuxtcpdump使用介绍.html">
            
                <a href="../程序员必知必会的网络命令/Linuxtcpdump使用介绍.html">
            
                    
                    Linux tcpdump使用详解
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.1.5" data-path="../程序员必知必会的网络命令/从抓包的角度分析connect函数的连接过程.html">
            
                <a href="../程序员必知必会的网络命令/从抓包的角度分析connect函数的连接过程.html">
            
                    
                    从抓包的角度分析connect函数的连接过程
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="3.1.6" data-path="../程序员必知必会的网络命令/服务器开发中网络数据分析与故障排查经验漫谈.html">
            
                <a href="../程序员必知必会的网络命令/服务器开发中网络数据分析与故障排查经验漫谈.html">
            
                    
                    服务器开发中网络数据分析与故障排查经验漫谈
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

    
        
        <li class="header">Part II</li>
        
        
    
        <li class="chapter " data-level="4.1" data-path="../高性能服务器框架设计/">
            
                <a href="../高性能服务器框架设计/">
            
                    
                    高性能服务器框架设计
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="4.1.1" data-path="../高性能服务器框架设计/主线程与工作线程的分工.html">
            
                <a href="../高性能服务器框架设计/主线程与工作线程的分工.html">
            
                    
                    主线程与工作线程的分工
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="4.1.2" data-path="../高性能服务器框架设计/Reactor模式.html">
            
                <a href="../高性能服务器框架设计/Reactor模式.html">
            
                    
                    Reactor模式
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="4.1.3" data-path="../高性能服务器框架设计/实例：一个服务器程序的架构介绍.html">
            
                <a href="../高性能服务器框架设计/实例：一个服务器程序的架构介绍.html">
            
                    
                    实例：一个服务器程序的架构介绍
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="4.1.4" data-path="../高性能服务器框架设计/错误码系统的设计.html">
            
                <a href="../高性能服务器框架设计/错误码系统的设计.html">
            
                    
                    错误码系统的设计
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="4.1.5" data-path="../高性能服务器框架设计/日志系统的设计.html">
            
                <a href="../高性能服务器框架设计/日志系统的设计.html">
            
                    
                    日志系统的设计
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="4.1.6" data-path="../高性能服务器框架设计/如何设计断线自动重连机制.html">
            
                <a href="../高性能服务器框架设计/如何设计断线自动重连机制.html">
            
                    
                    如何设计断线自动重连机制
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="4.1.7" data-path="../高性能服务器框架设计/心跳包机制设计详解.html">
            
                <a href="../高性能服务器框架设计/心跳包机制设计详解.html">
            
                    
                    心跳包机制设计详解
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="4.1.8" data-path="../高性能服务器框架设计/业务数据处理一定要单独开线程吗.html">
            
                <a href="../高性能服务器框架设计/业务数据处理一定要单独开线程吗.html">
            
                    
                    业务数据处理一定要单独开线程吗
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="4.1.9" data-path="../高性能服务器框架设计/C++高性能服务器网络框架设计细节.html">
            
                <a href="../高性能服务器框架设计/C++高性能服务器网络框架设计细节.html">
            
                    
                    C++ 高性能服务器网络框架设计细节
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

    
        
        <li class="divider"></li>
        
        
    
        <li class="chapter " data-level="5.1" data-path="../服务器开发案例实战/">
            
                <a href="../服务器开发案例实战/">
            
                    
                    服务器开发案例实战
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="5.1.1" data-path="../服务器开发案例实战/从零实现一个http服务器.html">
            
                <a href="../服务器开发案例实战/从零实现一个http服务器.html">
            
                    
                    从零实现一个http服务器
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="5.1.2" data-path="../服务器开发案例实战/从零实现一款12306刷票软件.html">
            
                <a href="../服务器开发案例实战/从零实现一款12306刷票软件.html">
            
                    
                    从零实现一款12306刷票软件
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="5.1.3" data-path="../服务器开发案例实战/从零实现一个邮件收发客户端.html">
            
                <a href="../服务器开发案例实战/从零实现一个邮件收发客户端.html">
            
                    
                    从零实现一个邮件收发客户端
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="5.1.4" data-path="../服务器开发案例实战/从零开发一个WebSocket服务器.html">
            
                <a href="../服务器开发案例实战/从零开发一个WebSocket服务器.html">
            
                    
                    从零开发一个WebSocket服务器
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="5.1.5" data-path="../服务器开发案例实战/1从一款多人联机实时对战游戏开始.html">
            
                <a href="../服务器开发案例实战/1从一款多人联机实时对战游戏开始.html">
            
                    
                    从零学习开源项目系列（一） 从一款多人联机实时对战游戏开始
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="5.1.6" data-path="../服务器开发案例实战/2最后一战概况.html">
            
                <a href="../服务器开发案例实战/2最后一战概况.html">
            
                    
                    从零学习开源项目系列（二） 最后一战概况
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="5.1.7" data-path="../服务器开发案例实战/3CSBattleMgr服务源码研究.html">
            
                <a href="../服务器开发案例实战/3CSBattleMgr服务源码研究.html">
            
                    
                    从零学习开源项目系列（三） CSBattleMgr服务源码研究
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="5.1.8" data-path="../服务器开发案例实战/4LogServer源码探究.html">
            
                <a href="../服务器开发案例实战/4LogServer源码探究.html">
            
                    
                    从零学习开源项目系列（四）LogServer源码探究
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

    
        
        <li class="header">Part III</li>
        
        
    
        <li class="chapter " data-level="6.1" data-path="../TeamTalk源码解析/">
            
                <a href="../TeamTalk源码解析/">
            
                    
                    TeamTalk IM源码分析
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="6.1.1" data-path="../TeamTalk源码解析/01TeamTalk介绍.html">
            
                <a href="../TeamTalk源码解析/01TeamTalk介绍.html">
            
                    
                    01 TeamTalk介绍
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="6.1.2" data-path="../TeamTalk源码解析/02服务器端的程序的编译与部署.html">
            
                <a href="../TeamTalk源码解析/02服务器端的程序的编译与部署.html">
            
                    
                    02 服务器端的程序的编译与部署
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="6.1.3" data-path="../TeamTalk源码解析/03服务器端的程序架构介绍.html">
            
                <a href="../TeamTalk源码解析/03服务器端的程序架构介绍.html">
            
                    
                    03 服务器端的程序架构介绍
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="6.1.4" data-path="../TeamTalk源码解析/04服务器端db_proxy_server源码分析.html">
            
                <a href="../TeamTalk源码解析/04服务器端db_proxy_server源码分析.html">
            
                    
                    04 服务器端db_proxy_server源码分析
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="6.1.5" data-path="../TeamTalk源码解析/05服务器端msg_server源码分析.html">
            
                <a href="../TeamTalk源码解析/05服务器端msg_server源码分析.html">
            
                    
                    05 服务器端msg_server源码分析
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="6.1.6" data-path="../TeamTalk源码解析/06服务器端login_server源码分析.html">
            
                <a href="../TeamTalk源码解析/06服务器端login_server源码分析.html">
            
                    
                    06 服务器端login_server源码分析
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="6.1.7" data-path="../TeamTalk源码解析/07服务器端msfs源码分析.html">
            
                <a href="../TeamTalk源码解析/07服务器端msfs源码分析.html">
            
                    
                    07 服务器端msfs源码分析
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="6.1.8" data-path="../TeamTalk源码解析/08服务器端file_server源码分析.html">
            
                <a href="../TeamTalk源码解析/08服务器端file_server源码分析.html">
            
                    
                    08 服务器端file_server源码分析
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="6.1.9" data-path="../TeamTalk源码解析/09服务器端route_server源码分析.html">
            
                <a href="../TeamTalk源码解析/09服务器端route_server源码分析.html">
            
                    
                    09 服务器端route_server源码分析
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="6.1.10" data-path="../TeamTalk源码解析/10开放一个TeamTalk测试服务器地址和几个测试账号.html">
            
                <a href="../TeamTalk源码解析/10开放一个TeamTalk测试服务器地址和几个测试账号.html">
            
                    
                    10 开放一个TeamTalk测试服务器地址和几个测试账号
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="6.1.11" data-path="../TeamTalk源码解析/11pc客户端源码分析.html">
            
                <a href="../TeamTalk源码解析/11pc客户端源码分析.html">
            
                    
                    11 pc客户端源码分析
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

    
        
        <li class="divider"></li>
        
        
    
        <li class="chapter " data-level="7.1" data-path="../libevent源码深度剖析/">
            
                <a href="../libevent源码深度剖析/">
            
                    
                    libevent源码深度剖析
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="7.1.1" data-path="../libevent源码深度剖析/libevent源码深度剖析01.html">
            
                <a href="../libevent源码深度剖析/libevent源码深度剖析01.html">
            
                    
                    libevent源码深度剖析01
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.1.2" data-path="../libevent源码深度剖析/libevent源码深度剖析02.html">
            
                <a href="../libevent源码深度剖析/libevent源码深度剖析02.html">
            
                    
                    libevent源码深度剖析02
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.1.3" data-path="../libevent源码深度剖析/libevent源码深度剖析03.html">
            
                <a href="../libevent源码深度剖析/libevent源码深度剖析03.html">
            
                    
                    libevent源码深度剖析03
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.1.4" data-path="../libevent源码深度剖析/libevent源码深度剖析04.html">
            
                <a href="../libevent源码深度剖析/libevent源码深度剖析04.html">
            
                    
                    libevent源码深度剖析04
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.1.5" data-path="../libevent源码深度剖析/libevent源码深度剖析05.html">
            
                <a href="../libevent源码深度剖析/libevent源码深度剖析05.html">
            
                    
                    libevent源码深度剖析05
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.1.6" data-path="../libevent源码深度剖析/libevent源码深度剖析06.html">
            
                <a href="../libevent源码深度剖析/libevent源码深度剖析06.html">
            
                    
                    libevent源码深度剖析06
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.1.7" data-path="../libevent源码深度剖析/libevent源码深度剖析07.html">
            
                <a href="../libevent源码深度剖析/libevent源码深度剖析07.html">
            
                    
                    libevent源码深度剖析07
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.1.8" data-path="../libevent源码深度剖析/libevent源码深度剖析08.html">
            
                <a href="../libevent源码深度剖析/libevent源码深度剖析08.html">
            
                    
                    libevent源码深度剖析08
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.1.9" data-path="../libevent源码深度剖析/libevent源码深度剖析09.html">
            
                <a href="../libevent源码深度剖析/libevent源码深度剖析09.html">
            
                    
                    libevent源码深度剖析09
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.1.10" data-path="../libevent源码深度剖析/libevent源码深度剖析10.html">
            
                <a href="../libevent源码深度剖析/libevent源码深度剖析10.html">
            
                    
                    libevent源码深度剖析10
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.1.11" data-path="../libevent源码深度剖析/libevent源码深度剖析11.html">
            
                <a href="../libevent源码深度剖析/libevent源码深度剖析11.html">
            
                    
                    libevent源码深度剖析11
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.1.12" data-path="../libevent源码深度剖析/libevent源码深度剖析12.html">
            
                <a href="../libevent源码深度剖析/libevent源码深度剖析12.html">
            
                    
                    libevent源码深度剖析12
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.1.13" data-path="../libevent源码深度剖析/libevent源码深度剖析13.html">
            
                <a href="../libevent源码深度剖析/libevent源码深度剖析13.html">
            
                    
                    libevent源码深度剖析13
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="7.2" data-path="../leveldb源码分析/">
            
                <a href="../leveldb源码分析/">
            
                    
                    leveldb源码分析
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="7.2.1" data-path="../leveldb源码分析/leveldb源码分析1.html">
            
                <a href="../leveldb源码分析/leveldb源码分析1.html">
            
                    
                    leveldb源码分析1
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.2.2" data-path="../leveldb源码分析/leveldb源码分析2.html">
            
                <a href="../leveldb源码分析/leveldb源码分析2.html">
            
                    
                    leveldb源码分析2
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.2.3" data-path="../leveldb源码分析/leveldb源码分析3.html">
            
                <a href="../leveldb源码分析/leveldb源码分析3.html">
            
                    
                    leveldb源码分析3
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.2.4" data-path="../leveldb源码分析/leveldb源码分析4.html">
            
                <a href="../leveldb源码分析/leveldb源码分析4.html">
            
                    
                    leveldb源码分析4
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.2.5" data-path="../leveldb源码分析/leveldb源码分析5.html">
            
                <a href="../leveldb源码分析/leveldb源码分析5.html">
            
                    
                    leveldb源码分析5
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.2.6" data-path="../leveldb源码分析/leveldb源码分析6.html">
            
                <a href="../leveldb源码分析/leveldb源码分析6.html">
            
                    
                    leveldb源码分析6
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.2.7" data-path="../leveldb源码分析/leveldb源码分析7.html">
            
                <a href="../leveldb源码分析/leveldb源码分析7.html">
            
                    
                    leveldb源码分析7
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.2.8" data-path="../leveldb源码分析/leveldb源码分析8.html">
            
                <a href="../leveldb源码分析/leveldb源码分析8.html">
            
                    
                    leveldb源码分析8
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.2.9" data-path="../leveldb源码分析/leveldb源码分析9.html">
            
                <a href="../leveldb源码分析/leveldb源码分析9.html">
            
                    
                    leveldb源码分析9
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.2.10" data-path="../leveldb源码分析/leveldb源码分析10.html">
            
                <a href="../leveldb源码分析/leveldb源码分析10.html">
            
                    
                    leveldb源码分析10
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.2.11" data-path="../leveldb源码分析/leveldb源码分析11.html">
            
                <a href="../leveldb源码分析/leveldb源码分析11.html">
            
                    
                    leveldb源码分析11
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.2.12" data-path="../leveldb源码分析/leveldb源码分析12.html">
            
                <a href="../leveldb源码分析/leveldb源码分析12.html">
            
                    
                    leveldb源码分析12
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.2.13" data-path="../leveldb源码分析/leveldb源码分析13.html">
            
                <a href="../leveldb源码分析/leveldb源码分析13.html">
            
                    
                    leveldb源码分析13
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.2.14" data-path="../leveldb源码分析/leveldb源码分析14.html">
            
                <a href="../leveldb源码分析/leveldb源码分析14.html">
            
                    
                    leveldb源码分析14
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.2.15" data-path="../leveldb源码分析/leveldb源码分析15.html">
            
                <a href="../leveldb源码分析/leveldb源码分析15.html">
            
                    
                    leveldb源码分析15
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.2.16" data-path="../leveldb源码分析/leveldb源码分析16.html">
            
                <a href="../leveldb源码分析/leveldb源码分析16.html">
            
                    
                    leveldb源码分析16
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.2.17" data-path="../leveldb源码分析/leveldb源码分析17.html">
            
                <a href="../leveldb源码分析/leveldb源码分析17.html">
            
                    
                    leveldb源码分析17
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.2.18" data-path="../leveldb源码分析/leveldb源码分析18.html">
            
                <a href="../leveldb源码分析/leveldb源码分析18.html">
            
                    
                    leveldb源码分析18
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.2.19" data-path="../leveldb源码分析/leveldb源码分析19.html">
            
                <a href="../leveldb源码分析/leveldb源码分析19.html">
            
                    
                    leveldb源码分析19
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.2.20" data-path="../leveldb源码分析/leveldb源码分析20.html">
            
                <a href="../leveldb源码分析/leveldb源码分析20.html">
            
                    
                    leveldb源码分析20
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.2.21" data-path="../leveldb源码分析/leveldb源码分析21.html">
            
                <a href="../leveldb源码分析/leveldb源码分析21.html">
            
                    
                    leveldb源码分析21
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="7.2.22" data-path="../leveldb源码分析/leveldb源码分析22.html">
            
                <a href="../leveldb源码分析/leveldb源码分析22.html">
            
                    
                    leveldb源码分析22
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

    
        
        <li class="divider"></li>
        
        
    
        <li class="chapter " data-level="8.1" data-path="../Memcached源码分析/">
            
                <a href="../Memcached源码分析/">
            
                    
                    Memcached源码分析
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="8.1.1" data-path="../Memcached源码分析/00服务器资源调整.html">
            
                <a href="../Memcached源码分析/00服务器资源调整.html">
            
                    
                    00 服务器资源调整
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="8.1.2" data-path="../Memcached源码分析/01初始化参数解析.html">
            
                <a href="../Memcached源码分析/01初始化参数解析.html">
            
                    
                    01 初始化参数解析
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="8.1.3" data-path="../Memcached源码分析/02网络监听的建立.html">
            
                <a href="../Memcached源码分析/02网络监听的建立.html">
            
                    
                    02 网络监听的建立
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="8.1.4" data-path="../Memcached源码分析/03网络连接建立.html">
            
                <a href="../Memcached源码分析/03网络连接建立.html">
            
                    
                    03 网络连接建立
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="8.1.5" data-path="../Memcached源码分析/04内存初始化.html">
            
                <a href="../Memcached源码分析/04内存初始化.html">
            
                    
                    04 内存初始化
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="8.1.6" data-path="../Memcached源码分析/05资源初始化.html">
            
                <a href="../Memcached源码分析/05资源初始化.html">
            
                    
                    05 资源初始化
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="8.1.7" data-path="../Memcached源码分析/06get过程.html">
            
                <a href="../Memcached源码分析/06get过程.html">
            
                    
                    06 get过程
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="8.1.8" data-path="../Memcached源码分析/07cas属性.html">
            
                <a href="../Memcached源码分析/07cas属性.html">
            
                    
                    07 cas属性
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="8.1.9" data-path="../Memcached源码分析/08内存池.html">
            
                <a href="../Memcached源码分析/08内存池.html">
            
                    
                    08 内存池
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="8.1.10" data-path="../Memcached源码分析/09连接队列.html">
            
                <a href="../Memcached源码分析/09连接队列.html">
            
                    
                    09 连接队列
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="8.1.11" data-path="../Memcached源码分析/10Hash表操作.html">
            
                <a href="../Memcached源码分析/10Hash表操作.html">
            
                    
                    10 Hash表操作
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="8.1.12" data-path="../Memcached源码分析/12set操作.html">
            
                <a href="../Memcached源码分析/12set操作.html">
            
                    
                    12 set操作
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="8.1.13" data-path="../Memcached源码分析/13do_item_alloc操作.html">
            
                <a href="../Memcached源码分析/13do_item_alloc操作.html">
            
                    
                    13 do_item_alloc操作
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="8.1.14" data-path="../Memcached源码分析/14item结构.html">
            
                <a href="../Memcached源码分析/14item结构.html">
            
                    
                    14 item结构
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="8.1.15" data-path="../Memcached源码分析/15Hash表扩容.html">
            
                <a href="../Memcached源码分析/15Hash表扩容.html">
            
                    
                    15 Hash表扩容
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="8.1.16" data-path="../Memcached源码分析/16线程交互.html">
            
                <a href="../Memcached源码分析/16线程交互.html">
            
                    
                    16 线程交互
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="8.1.17" data-path="../Memcached源码分析/17状态机.html">
            
                <a href="../Memcached源码分析/17状态机.html">
            
                    
                    17 状态机
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

    
        
        <li class="divider"></li>
        
        
    
        <li class="chapter " data-level="9.1" data-path="../游戏开发专题/">
            
                <a href="../游戏开发专题/">
            
                    
                    游戏开发专题
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="9.1.1" data-path="../游戏开发专题/1游戏服务器开发的基本体系与服务器端开发的一些建议.html">
            
                <a href="../游戏开发专题/1游戏服务器开发的基本体系与服务器端开发的一些建议.html">
            
                    
                    1 游戏服务器开发的基本体系与服务器端开发的一些建议
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="9.1.2" data-path="../游戏开发专题/2网络游戏服务器开发框架设计介绍.html">
            
                <a href="../游戏开发专题/2网络游戏服务器开发框架设计介绍.html">
            
                    
                    2 网络游戏服务器开发框架设计介绍
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="9.1.3" data-path="../游戏开发专题/3游戏后端开发需要掌握的知识.html">
            
                <a href="../游戏开发专题/3游戏后端开发需要掌握的知识.html">
            
                    
                    3 游戏后端开发需要掌握的知识
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="9.1.4" data-path="../游戏开发专题/4关于游戏服务端架构的整理.html">
            
                <a href="../游戏开发专题/4关于游戏服务端架构的整理.html">
            
                    
                    4 关于游戏服务端架构的整理
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="9.1.5" data-path="../游戏开发专题/5各类游戏对应的服务端架构.html">
            
                <a href="../游戏开发专题/5各类游戏对应的服务端架构.html">
            
                    
                    5 各类游戏对应的服务端架构
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="9.1.6" data-path="../游戏开发专题/6从腾讯QQgame高性能服务器集群架构看“分而治之”与“自治”等分布式架构设计原则.html">
            
                <a href="../游戏开发专题/6从腾讯QQgame高性能服务器集群架构看“分而治之”与“自治”等分布式架构设计原则.html">
            
                    
                    6 从腾讯QQgame高性能服务器集群架构看“分而治之”与“自治”等分布式架构设计原则
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="9.1.7" data-path="../游戏开发专题/7QQ游戏百万人同时在线服务器架构实现.html">
            
                <a href="../游戏开发专题/7QQ游戏百万人同时在线服务器架构实现.html">
            
                    
                    7 QQ游戏百万人同时在线服务器架构实现
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="9.1.8" data-path="../游戏开发专题/8大型多人在线游戏服务器架构设计.html">
            
                <a href="../游戏开发专题/8大型多人在线游戏服务器架构设计.html">
            
                    
                    8 大型多人在线游戏服务器架构设计
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="9.1.9" data-path="../游戏开发专题/9百万用户级游戏服务器架构设计.html">
            
                <a href="../游戏开发专题/9百万用户级游戏服务器架构设计.html">
            
                    
                    9 百万用户级游戏服务器架构设计
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="9.1.10" data-path="../游戏开发专题/10十万在线的WebGame的数据库设计思路.html">
            
                <a href="../游戏开发专题/10十万在线的WebGame的数据库设计思路.html">
            
                    
                    10 十万在线的WebGame的数据库设计思路
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="9.1.11" data-path="../游戏开发专题/11一种高性能网络游戏服务器架构设计.html">
            
                <a href="../游戏开发专题/11一种高性能网络游戏服务器架构设计.html">
            
                    
                    11 一种高性能网络游戏服务器架构设计
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="9.1.12" data-path="../游戏开发专题/12经典游戏服务器端架构概述.html">
            
                <a href="../游戏开发专题/12经典游戏服务器端架构概述.html">
            
                    
                    12 经典游戏服务器端架构概述
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="9.1.13" data-path="../游戏开发专题/13游戏跨服架构进化之路.html">
            
                <a href="../游戏开发专题/13游戏跨服架构进化之路.html">
            
                    
                    13 游戏跨服架构进化之路
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

    
        
        <li class="header">Part IV</li>
        
        
    
        <li class="chapter " data-level="10.1" data-path="../程序员面试题精讲/">
            
                <a href="../程序员面试题精讲/">
            
                    
                    程序员面试题精讲
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="10.1.1" data-path="../程序员面试题精讲/腾讯后台开发实习生技能要求.html">
            
                <a href="../程序员面试题精讲/腾讯后台开发实习生技能要求.html">
            
                    
                    腾讯后台开发实习生技能要求
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="10.1.2" data-path="../程序员面试题精讲/聊聊如何拿大厂的offer.html">
            
                <a href="../程序员面试题精讲/聊聊如何拿大厂的offer.html">
            
                    
                    聊聊如何拿大厂的 offer
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="10.1.3" data-path="../程序员面试题精讲/网络通信题目集锦.html">
            
                <a href="../程序员面试题精讲/网络通信题目集锦.html">
            
                    
                    网络通信题目集锦
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="10.1.4" data-path="../程序员面试题精讲/我面试后端开发经理的经历.html">
            
                <a href="../程序员面试题精讲/我面试后端开发经理的经历.html">
            
                    
                    我面试后端开发经理的经历
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="10.1.5" data-path="../程序员面试题精讲/LinuxCC++后端开发面试问哪些问题.html">
            
                <a href="../程序员面试题精讲/LinuxCC++后端开发面试问哪些问题.html">
            
                    
                    Linux C/C++后端开发面试问哪些问题
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="10.2" data-path="../职业规划/">
            
                <a href="../职业规划/">
            
                    
                    职业规划
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="10.2.1" data-path="../职业规划/给工作4年迷茫的程序员们的一点建议.html">
            
                <a href="../职业规划/给工作4年迷茫的程序员们的一点建议.html">
            
                    
                    给工作 4 年迷茫的程序员们的一点建议
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="10.2.2" data-path="../职业规划/聊聊技术人员的常见的职业问题.html">
            
                <a href="../职业规划/聊聊技术人员的常见的职业问题.html">
            
                    
                    聊聊技术人员的常见的职业问题
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="10.2.3" data-path="../职业规划/写给那些傻傻想做服务器开发的朋友.html">
            
                <a href="../职业规划/写给那些傻傻想做服务器开发的朋友.html">
            
                    
                    写给那些傻傻想做服务器开发的朋友
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="10.3" data-path="../自我提升与开源代码/">
            
                <a href="../自我提升与开源代码/">
            
                    
                    自我提升与开源代码
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="10.3.1" data-path="../自我提升与开源代码/2020年好好读一读开源代码吧.html">
            
                <a href="../自我提升与开源代码/2020年好好读一读开源代码吧.html">
            
                    
                    2020 年好好读一读开源代码吧
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="10.4" data-path="../后端开发相关的书籍/">
            
                <a href="../后端开发相关的书籍/">
            
                    
                    后端开发相关的书籍
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="10.4.1" data-path="../后端开发相关的书籍/后台开发应该读的书.html">
            
                <a href="../后端开发相关的书籍/后台开发应该读的书.html">
            
                    
                    后台开发应该读的书
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="10.5" data-path="../程序员的简历/">
            
                <a href="../程序员的简历/">
            
                    
                    程序员的简历
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="10.5.1" data-path="../程序员的简历/程序员如何写简历.html">
            
                <a href="../程序员的简历/程序员如何写简历.html">
            
                    
                    程序员如何写简历
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="10.6" data-path="../程序员的薪资与年终奖那些事儿/">
            
                <a href="../程序员的薪资与年终奖那些事儿/">
            
                    
                    程序员的薪资与年终奖那些事儿
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="10.6.1" data-path="../程序员的薪资与年终奖那些事儿/技术面试与HR谈薪资技巧.html">
            
                <a href="../程序员的薪资与年终奖那些事儿/技术面试与HR谈薪资技巧.html">
            
                    
                    技术面试与HR谈薪资技巧
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="10.6.2" data-path="../程序员的薪资与年终奖那些事儿/聊一聊程序员如何增加收入.html">
            
                <a href="../程序员的薪资与年终奖那些事儿/聊一聊程序员如何增加收入.html">
            
                    
                    聊一聊程序员如何增加收入
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="10.6.3" data-path="../程序员的薪资与年终奖那些事儿/谈一谈年终奖.html">
            
                <a href="../程序员的薪资与年终奖那些事儿/谈一谈年终奖.html">
            
                    
                    谈一谈年终奖
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="10.7" data-path="../程序员的烦心事/">
            
                <a href="../程序员的烦心事/">
            
                    
                    程序员的烦心事
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="10.7.1" data-path="../程序员的烦心事/拒绝了一家公司的offer后，他们的副总和hr总监同时打电话来询问拒绝原因并极力要求加入，我该不该去？.html">
            
                <a href="../程序员的烦心事/拒绝了一家公司的offer后，他们的副总和hr总监同时打电话来询问拒绝原因并极力要求加入，我该不该去？.html">
            
                    
                    拒绝了一家公司的offer后，他们的副总和hr总监同时打电话来询问拒绝原因并极力要求加入，我该不该去？
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="10.7.2" data-path="../程序员的烦心事/我是一名程序员，结婚时女友要求我用两年的工资作为彩礼，我该不该答应？.html">
            
                <a href="../程序员的烦心事/我是一名程序员，结婚时女友要求我用两年的工资作为彩礼，我该不该答应？.html">
            
                    
                    我是一名程序员，结婚时女友要求我用两年的工资作为彩礼，我该不该答应？
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="10.8" data-path="../作者的故事/">
            
                <a href="../作者的故事/">
            
                    
                    作者的故事
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="10.8.1" data-path="../作者的故事/我的2019.html">
            
                <a href="../作者的故事/我的2019.html">
            
                    
                    我的 2019
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="10.8.2" data-path="../作者的故事/我是如何年薪五十万的.html">
            
                <a href="../作者的故事/我是如何年薪五十万的.html">
            
                    
                    我是如何年薪五十万的
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

    

    <li class="divider"></li>

    <li>
        <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
            Published with GitBook
        </a>
    </li>
</ul>


		</nav>
		
		
	</div>

	<!-- Content nav -->
	<div class="book-anchor">
		<div class="book-anchor-title">在这篇文章中:</div>
		<div class="book-anchor-body">

		</div>
	</div>

	<div class="book-body">
		
		<div class="body-inner">
			
			

<div class="book-header" role="navigation">
    

    <!-- Title -->
    <h1>
        <i class="fa fa-circle-o-notch fa-spin"></i>
        <a href="../.." >bind 函数重难点解析</a>
    </h1>
</div>




			<div class="page-wrapper" tabindex="-1" role="main">
				<div class="page-inner">
					
<div id="book-search-results">
    <div class="search-noresults">
    
					<section class="normal markdown-section">
						
						<div id="anchor-navigation-ex-navbar"><i class="fa fa-navicon"></i><ul><li><span class="title-icon "></span><a href="#bind-&#x51FD;&#x6570;&#x91CD;&#x96BE;&#x70B9;&#x89E3;&#x6790;"><b></b>bind &#x51FD;&#x6570;&#x91CD;&#x96BE;&#x70B9;&#x89E3;&#x6790;</a></li><ul><li><span class="title-icon "></span><a href="#bind-&#x51FD;&#x6570;&#x5982;&#x4F55;&#x9009;&#x62E9;&#x7ED1;&#x5B9A;&#x5730;&#x5740;"><b></b>bind &#x51FD;&#x6570;&#x5982;&#x4F55;&#x9009;&#x62E9;&#x7ED1;&#x5B9A;&#x5730;&#x5740;</a></li><li><span class="title-icon "></span><a href="#bind-&#x51FD;&#x6570;&#x7AEF;&#x53E3;&#x53F7;&#x95EE;&#x9898;"><b></b>bind &#x51FD;&#x6570;&#x7AEF;&#x53E3;&#x53F7;&#x95EE;&#x9898;</a></li></ul></ul></div><h1 id="bind-&#x51FD;&#x6570;&#x91CD;&#x96BE;&#x70B9;&#x89E3;&#x6790;"><a name="bind-&#x51FD;&#x6570;&#x91CD;&#x96BE;&#x70B9;&#x89E3;&#x6790;" class="anchor-navigation-ex-anchor" href="#bind-&#x51FD;&#x6570;&#x91CD;&#x96BE;&#x70B9;&#x89E3;&#x6790;"><i class="fa fa-link" aria-hidden="true"></i></a>bind &#x51FD;&#x6570;&#x91CD;&#x96BE;&#x70B9;&#x89E3;&#x6790;</h1>
<h2 id="bind-&#x51FD;&#x6570;&#x5982;&#x4F55;&#x9009;&#x62E9;&#x7ED1;&#x5B9A;&#x5730;&#x5740;"><a name="bind-&#x51FD;&#x6570;&#x5982;&#x4F55;&#x9009;&#x62E9;&#x7ED1;&#x5B9A;&#x5730;&#x5740;" class="anchor-navigation-ex-anchor" href="#bind-&#x51FD;&#x6570;&#x5982;&#x4F55;&#x9009;&#x62E9;&#x7ED1;&#x5B9A;&#x5730;&#x5740;"><i class="fa fa-link" aria-hidden="true"></i></a>bind &#x51FD;&#x6570;&#x5982;&#x4F55;&#x9009;&#x62E9;&#x7ED1;&#x5B9A;&#x5730;&#x5740;</h2>
<p>bind &#x51FD;&#x6570;&#x7684;&#x57FA;&#x672C;&#x7528;&#x6CD5;&#x5982;&#x4E0B;&#xFF1A;</p>
<pre class="language-"><code>struct sockaddr_in bindaddr;
bindaddr.sin_family = AF_INET;
bindaddr.sin_addr.s_addr = htonl(INADDR_ANY);
bindaddr.sin_port = htons(3000);
if (bind(listenfd, (struct sockaddr *)&amp;bindaddr, sizeof(bindaddr)) == -1)
{
    std::cout &lt;&lt; &quot;bind listen socket error.&quot; &lt;&lt; std::endl;
    return -1;
}
</code></pre><p>&#x5176;&#x4E2D; bind &#x7684;&#x5730;&#x5740;&#x6211;&#x4EEC;&#x4F7F;&#x7528;&#x4E86;&#x4E00;&#x4E2A;&#x5B8F;&#x53EB; <strong>INADDR_ANY</strong> &#xFF0C;&#x5173;&#x4E8E;&#x8FD9;&#x4E2A;&#x5B8F;&#x7684;&#x89E3;&#x91CA;&#x5982;&#x4E0B;&#xFF1A;</p>
<pre class="language-"><code>If an application does not care what local address is assigned, 
specify the constant value INADDR_ANY for an IPv4 local address
or the constant value in6addr_any for an IPv6 local address 
in the sa_data member of the name parameter. This allows the 
underlying service provider to use any appropriate network address,
potentially simplifying application programming in the presence of 
multihomed hosts (that is, hosts that have more than one network 
interface and address).
</code></pre><p>&#x610F;&#x8BD1;&#x4E00;&#x4E0B;&#xFF1A;</p>
<pre class="language-"><code>&#x5982;&#x679C;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x4E0D;&#x5173;&#x5FC3;bind&#x7ED1;&#x5B9A;&#x7684;ip&#x5730;&#x5740;&#xFF0C;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;INADDR_ANY(&#x5982;&#x679C;&#x662F;IPv6&#xFF0C;
&#x5219;&#x5BF9;&#x5E94;in6addr_any)&#xFF0C;&#x8FD9;&#x6837;&#x5E95;&#x5C42;&#x7684;&#xFF08;&#x534F;&#x8BAE;&#x6808;&#xFF09;&#x670D;&#x52A1;&#x4F1A;&#x81EA;&#x52A8;&#x9009;&#x62E9;&#x4E00;&#x4E2A;&#x5408;&#x9002;&#x7684;ip&#x5730;&#x5740;&#xFF0C;
&#x8FD9;&#x6837;&#x4F7F;&#x5728;&#x4E00;&#x4E2A;&#x6709;&#x591A;&#x4E2A;&#x7F51;&#x5361;&#x673A;&#x5668;&#x4E0A;&#x9009;&#x62E9;ip&#x5730;&#x5740;&#x95EE;&#x9898;&#x53D8;&#x5F97;&#x7B80;&#x5355;&#x3002;
</code></pre><p>&#x4E5F;&#x5C31;&#x662F;&#x8BF4; <strong>INADDR_ANY</strong> &#x76F8;&#x5F53;&#x4E8E;&#x5730;&#x5740; <strong>0.0.0.0</strong>&#x3002;&#x53EF;&#x80FD;&#x8BFB;&#x8005;&#x8FD8;&#x662F;&#x4E0D;&#x592A;&#x660E;&#x767D;&#x6211;&#x60F3;&#x8868;&#x8FBE;&#x4EC0;&#x4E48;&#x3002;&#x8FD9;&#x91CC;&#x6211;&#x4E3E;&#x4E2A;&#x4F8B;&#x5B50;&#xFF0C;&#x5047;&#x8BBE;&#x6211;&#x4EEC;&#x5728;&#x4E00;&#x53F0;&#x673A;&#x5668;&#x4E0A;&#x5F00;&#x53D1;&#x4E00;&#x4E2A;&#x670D;&#x52A1;&#x5668;&#x7A0B;&#x5E8F;&#xFF0C;&#x4F7F;&#x7528; bind &#x51FD;&#x6570;&#x65F6;&#xFF0C;&#x6211;&#x4EEC;&#x6709;&#x591A;&#x4E2A;ip &#x5730;&#x5740;&#x53EF;&#x4EE5;&#x9009;&#x62E9;&#x3002;&#x9996;&#x5148;&#xFF0C;&#x8FD9;&#x53F0;&#x673A;&#x5668;&#x5BF9;&#x5916;&#x8BBF;&#x95EE;&#x7684;ip&#x5730;&#x5740;&#x662F;<strong>120.55.94.78</strong>&#xFF0C;&#x8FD9;&#x53F0;&#x673A;&#x5668;&#x5728;&#x5F53;&#x524D;&#x5C40;&#x57DF;&#x7F51;&#x7684;&#x5730;&#x5740;&#x662F;<strong>192.168.1.104</strong>&#xFF1B;&#x540C;&#x65F6;&#x8FD9;&#x53F0;&#x673A;&#x5668;&#x6709;&#x672C;&#x5730;&#x56DE;&#x73AF;&#x5730;&#x5740;<strong>127.0.0.1</strong>&#x3002;</p>
<p>&#x5982;&#x679C;&#x4F60;&#x6307;&#x5411;&#x672C;&#x673A;&#x4E0A;&#x53EF;&#x4EE5;&#x8BBF;&#x95EE;&#xFF0C;&#x90A3;&#x4E48;&#x4F60; bind &#x51FD;&#x6570;&#x4E2D;&#x7684;&#x5730;&#x5740;&#x5C31;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;<strong>127.0.0.1</strong>; &#x5982;&#x679C;&#x4F60;&#x7684;&#x670D;&#x52A1;&#x53EA;&#x60F3;&#x88AB;&#x5C40;&#x57DF;&#x7F51;&#x5185;&#x90E8;&#x673A;&#x5668;&#x8BBF;&#x95EE;&#xFF0C;bind &#x51FD;&#x6570;&#x7684;&#x5730;&#x5740;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;<strong>192.168.1.104</strong>&#xFF1B;&#x5982;&#x679C; &#x5E0C;&#x671B;&#x8FD9;&#x4E2A;&#x670D;&#x52A1;&#x53EF;&#x4EE5;&#x88AB;&#x516C;&#x7F51;&#x8BBF;&#x95EE;&#xFF0C;&#x4F60;&#x5C31;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x5730;&#x5740;<strong>0.0.0.0</strong>&#x6216; <strong>INADDR_ANY</strong>&#x3002;</p>
<h2 id="bind-&#x51FD;&#x6570;&#x7AEF;&#x53E3;&#x53F7;&#x95EE;&#x9898;"><a name="bind-&#x51FD;&#x6570;&#x7AEF;&#x53E3;&#x53F7;&#x95EE;&#x9898;" class="anchor-navigation-ex-anchor" href="#bind-&#x51FD;&#x6570;&#x7AEF;&#x53E3;&#x53F7;&#x95EE;&#x9898;"><i class="fa fa-link" aria-hidden="true"></i></a>bind &#x51FD;&#x6570;&#x7AEF;&#x53E3;&#x53F7;&#x95EE;&#x9898;</h2>
<p>&#x7F51;&#x7EDC;&#x901A;&#x4FE1;&#x7A0B;&#x5E8F;&#x7684;&#x57FA;&#x672C;&#x903B;&#x8F91;&#x662F;&#x5BA2;&#x6237;&#x7AEF;&#x8FDE;&#x63A5;&#x670D;&#x52A1;&#x5668;&#xFF0C;&#x5373;&#x4ECE;&#x5BA2;&#x6237;&#x7AEF;&#x7684;<strong>&#x5730;&#x5740;:&#x7AEF;&#x53E3;</strong>&#x8FDE;&#x63A5;&#x5230;&#x670D;&#x52A1;&#x5668;<strong>&#x5730;&#x5740;:&#x7AEF;&#x53E3;</strong>&#x4E0A;&#xFF0C;&#x4EE5; 4.2 &#x5C0F;&#x8282;&#x4E2D;&#x7684;&#x793A;&#x4F8B;&#x7A0B;&#x5E8F;&#x4E3A;&#x4F8B;&#xFF0C;&#x670D;&#x52A1;&#x5668;&#x7AEF;&#x7684;&#x7AEF;&#x53E3;&#x53F7;&#x4F7F;&#x7528; 3000&#xFF0C;&#x90A3;&#x5BA2;&#x6237;&#x7AEF;&#x8FDE;&#x63A5;&#x65F6;&#x7684;&#x7AEF;&#x53E3;&#x53F7;&#x662F;&#x591A;&#x5C11;&#x5462;&#xFF1F;TCP &#x901A;&#x4FE1;&#x53CC;&#x65B9;&#x4E2D;&#x4E00;&#x822C;&#x670D;&#x52A1;&#x5668;&#x7AEF;&#x7AEF;&#x53E3;&#x53F7;&#x662F;&#x56FA;&#x5B9A;&#x7684;&#xFF0C;&#x800C;&#x5BA2;&#x6237;&#x7AEF;&#x7AEF;&#x53E3;&#x53F7;&#x662F;&#x8FDE;&#x63A5;&#x53D1;&#x8D77;&#x65F6;&#x7531;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x968F;&#x673A;&#x5206;&#x914D;&#x7684;&#xFF08;&#x4E0D;&#x4F1A;&#x5206;&#x914D;&#x5DF2;&#x7ECF;&#x88AB;&#x5360;&#x7528;&#x7684;&#x7AEF;&#x53E3;&#xFF09;&#x3002;&#x7AEF;&#x53E3;&#x53F7;&#x662F;&#x4E00;&#x4E2A; C short &#x7C7B;&#x578B;&#x7684;&#x503C;&#xFF0C;&#x5176;&#x8303;&#x56F4;&#x662F;0&#xFF5E;65535&#xFF0C;&#x77E5;&#x9053;&#x8FD9;&#x70B9;&#x5F88;&#x91CD;&#x8981;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x4EEC;&#x5728;&#x7F16;&#x5199;&#x538B;&#x529B;&#x6D4B;&#x8BD5;&#x7A0B;&#x5E8F;&#x65F6;&#xFF0C;&#x7531;&#x4E8E;&#x7AEF;&#x53E3;&#x6570;&#x91CF;&#x7684;&#x9650;&#x5236;&#xFF0C;&#x5728;&#x67D0;&#x53F0;&#x673A;&#x5668;&#x4E0A;&#x7F51;&#x5361;&#x5730;&#x5740;&#x4E0D;&#x53D8;&#x7684;&#x60C5;&#x51B5;&#x4E0B;&#x538B;&#x529B;&#x6D4B;&#x8BD5;&#x7A0B;&#x5E8F;&#x7406;&#x8BBA;&#x4E0A;&#x6700;&#x591A;&#x53EA;&#x80FD;&#x53D1;&#x8D77;&#x516D;&#x4E07;&#x4E94;&#x5343;&#x591A;&#x4E2A;&#x8FDE;&#x63A5;&#x3002;&#x6CE8;&#x610F;&#x6211;&#x8BF4;&#x7684;&#x662F;&#x7406;&#x8BBA;&#x4E0A;&#xFF0C;&#x5728;&#x5B9E;&#x9645;&#x60C5;&#x51B5;&#x4E0B;&#xFF0C;&#x7531;&#x4E8E;&#x5F53;&#x65F6;&#x7684;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x5F88;&#x591A;&#x7AEF;&#x53E3;&#x53EF;&#x80FD;&#x5DF2;&#x7ECF;&#x88AB;&#x5360;&#x7528;&#xFF0C;&#x5B9E;&#x9645;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x7684;&#x7AEF;&#x53E3;&#x6BD4;&#x8FD9;&#x4E2A;&#x66F4;&#x5C11;&#xFF0C;&#x4F8B;&#x5982;&#xFF0C;&#x4E00;&#x822C;&#x89C4;&#x5B9A;&#x7AEF;&#x53E3;&#x53F7;&#x5728;1024&#x4EE5;&#x4E0B;&#x7684;&#x7AEF;&#x53E3;&#x662F;&#x4FDD;&#x7559;&#x7AEF;&#x53E3;&#xFF0C;&#x4E0D;&#x5EFA;&#x8BAE;&#x7528;&#x6237;&#x7A0B;&#x5E8F;&#x4F7F;&#x7528;&#x3002;&#x800C;&#x5BF9;&#x4E8E; Windows &#x7CFB;&#x7EDF;&#xFF0C;MSDN &#x751A;&#x81F3;&#x660E;&#x786E;&#x5730;&#x8BF4;&#xFF1A;</p>
<blockquote>
<p>On Windows Vista and later, the dynamic client port range is a value between 49152 and 65535. This is a change from Windows Server 2003 and earlier where the dynamic client port range was a value between 1025 and 5000.
Vista &#x53CA;&#x4EE5;&#x540E;&#x7684;Windows&#xFF0C;&#x53EF;&#x7528;&#x7684;&#x52A8;&#x6001;&#x7AEF;&#x53E3;&#x8303;&#x56F4;&#x662F;49152&#xFF5E;65535&#xFF0C;&#x800C; Windows Server&#x53CA;&#x66F4;&#x65E9;&#x7684;&#x7CFB;&#x7EDF;&#xFF0C;&#x53EF;&#x4EE5;&#x7684;&#x52A8;&#x6001;&#x7AEF;&#x53E3;&#x8303;&#x56F4;&#x662F;1025~5000&#x3002;&#xFF08;&#x4F60;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x4FEE;&#x6539;&#x6CE8;&#x518C;&#x8868;&#x6765;&#x6539;&#x53D8;&#x8FD9;&#x4E00;&#x8BBE;&#x7F6E;&#xFF0C;&#x53C2;&#x8003;&#x7F51;&#x5740;&#xFF1A;<a href="https://docs.microsoft.com/en-us/windows/desktop/api/winsock/nf-winsock-bind&#xFF09;" target="_blank">https://docs.microsoft.com/en-us/windows/desktop/api/winsock/nf-winsock-bind&#xFF09;</a></p>
</blockquote>
<p>&#x5982;&#x679C;&#x5C06; bind &#x51FD;&#x6570;&#x4E2D;&#x7684;&#x7AEF;&#x53E3;&#x53F7;&#x8BBE;&#x7F6E;&#x6210;0&#xFF0C;&#x90A3;&#x4E48;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x4F1A;&#x968F;&#x673A;&#x7ED9;&#x7A0B;&#x5E8F;&#x5206;&#x914D;&#x4E00;&#x4E2A;&#x53EF;&#x7528;&#x7684;&#x4FA6;&#x542C;&#x7AEF;&#x53E3;&#xFF0C;&#x5F53;&#x7136;&#x670D;&#x52A1;&#x5668;&#x7A0B;&#x5E8F;&#x4E00;&#x822C;&#x4E0D;&#x4F1A;&#x8FD9;&#x4E48;&#x505A;&#xFF0C;&#x56E0;&#x4E3A;&#x670D;&#x52A1;&#x5668;&#x7A0B;&#x5E8F;&#x662F;&#x8981;&#x5BF9;&#x5916;&#x670D;&#x52A1;&#x7684;&#xFF0C;&#x5FC5;&#x987B;&#x8BA9;&#x5BA2;&#x6237;&#x7AEF;&#x77E5;&#x9053;&#x786E;&#x5207;&#x7684;ip&#x5730;&#x5740;&#x548C;&#x7AEF;&#x53E3;&#x53F7;&#x3002;</p>
<p>&#x5F88;&#x591A;&#x4EBA;&#x89C9;&#x5F97;&#x53EA;&#x6709;&#x670D;&#x52A1;&#x5668;&#x7A0B;&#x5E8F;&#x53EF;&#x4EE5;&#x8C03;&#x7528; bind &#x51FD;&#x6570;&#x7ED1;&#x5B9A;&#x4E00;&#x4E2A;&#x7AEF;&#x53E3;&#x53F7;&#xFF0C;&#x5176;&#x5B9E;&#x4E0D;&#x7136;&#xFF0C;&#x5728;&#x4E00;&#x4E9B;&#x7279;&#x6B8A;&#x7684;&#x5E94;&#x7528;&#x4E2D;&#xFF0C;&#x6211;&#x4EEC;&#x9700;&#x8981;&#x5BA2;&#x6237;&#x7AEF;&#x7A0B;&#x5E8F;&#x4EE5;&#x6307;&#x5B9A;&#x7684;&#x7AEF;&#x53E3;&#x53F7;&#x53BB;&#x8FDE;&#x63A5;&#x670D;&#x52A1;&#x5668;&#xFF0C;&#x6B64;&#x65F6;&#x6211;&#x4EEC;&#x5C31;&#x53EF;&#x4EE5;&#x5728;&#x5BA2;&#x6237;&#x7AEF;&#x7A0B;&#x5E8F;&#x4E2D;&#x8C03;&#x7528; bind &#x51FD;&#x6570;&#x7ED1;&#x5B9A;&#x4E00;&#x4E2A;&#x5177;&#x4F53;&#x7684;&#x7AEF;&#x53E3;&#x3002;</p>
<p>&#x6211;&#x4EEC;&#x7528;&#x4EE3;&#x7801;&#x6765;&#x5B9E;&#x9645;&#x9A8C;&#x8BC1;&#x4E00;&#x4E0B;&#x4E0A;&#x8DEF;&#x6240;&#x8BF4;&#x7684;&#xFF0C;&#x4E3A;&#x4E86;&#x80FD;&#x770B;&#x5230;&#x8FDE;&#x63A5;&#x72B6;&#x6001;&#xFF0C;&#x6211;&#x4EEC;&#x5C06;&#x5BA2;&#x6237;&#x7AEF;&#x548C;&#x670D;&#x52A1;&#x5668;&#x5173;&#x95ED;socket&#x7684;&#x4EE3;&#x7801;&#x6CE8;&#x91CA;&#x6389;&#xFF0C;&#x8FD9;&#x6837;&#x8FDE;&#x63A5;&#x4F1A;&#x4FDD;&#x6301;&#x4E00;&#x6BB5;&#x65F6;&#x95F4;&#x3002;</p>
<ul>
<li><strong>&#x60C5;&#x5F62;&#x4E00;&#xFF1A;&#x5BA2;&#x6237;&#x7AEF;&#x4EE3;&#x7801;&#x4E0D;&#x7ED1;&#x5B9A;&#x7AEF;&#x53E3;</strong></li>
</ul>
<p>&#x4FEE;&#x6539;&#x540E;&#x7684;&#x670D;&#x52A1;&#x5668;&#x4EE3;&#x7801;&#x5982;&#x4E0B;&#xFF1A;</p>
<pre class="language-"><code>/**
 * TCP&#x670D;&#x52A1;&#x5668;&#x901A;&#x4FE1;&#x57FA;&#x672C;&#x6D41;&#x7A0B;
 * zhangyl 2018.12.13
 */
#include &lt;sys/types.h&gt; 
#include &lt;sys/socket.h&gt;
#include &lt;arpa/inet.h&gt;
#include <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>unistd.h</span><span class="token punctuation">&gt;</span></span>
#include <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>iostream</span><span class="token punctuation">&gt;</span></span>
#include <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>string.h</span><span class="token punctuation">&gt;</span></span>
#include <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>vector</span><span class="token punctuation">&gt;</span></span>

int main(int argc, char* argv[])
{
    //1.&#x521B;&#x5EFA;&#x4E00;&#x4E2A;&#x4FA6;&#x542C;socket
    int listenfd = socket(AF_INET, SOCK_STREAM, 0);
    if (listenfd == -1)
    {
        std::cout &lt;&lt; &quot;create listen socket error.&quot; &lt;&lt; std::endl;
        return -1;
    }

    //2.&#x521D;&#x59CB;&#x5316;&#x670D;&#x52A1;&#x5668;&#x5730;&#x5740;
    struct sockaddr_in bindaddr;
    bindaddr.sin_family = AF_INET;
    bindaddr.sin_addr.s_addr = htonl(INADDR_ANY);
    bindaddr.sin_port = htons(3000);
    if (bind(listenfd, (struct sockaddr *)&amp;bindaddr, sizeof(bindaddr)) == -1)
    {
        std::cout &lt;&lt; &quot;bind listen socket error.&quot; &lt;&lt; std::endl;
        return -1;
    }

    //3.&#x542F;&#x52A8;&#x4FA6;&#x542C;
    if (listen(listenfd, SOMAXCONN) == -1)
    {
        std::cout &lt;&lt; &quot;listen error.&quot; &lt;&lt; std::endl;
        return -1;
    }

    //&#x8BB0;&#x5F55;&#x6240;&#x6709;&#x5BA2;&#x6237;&#x7AEF;&#x8FDE;&#x63A5;&#x7684;&#x5BB9;&#x5668;
    std::vector<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>int</span><span class="token punctuation">&gt;</span></span> clientfds;
    while (true)
    {
        struct sockaddr_in clientaddr;
        socklen_t clientaddrlen = sizeof(clientaddr);
        //4. &#x63A5;&#x53D7;&#x5BA2;&#x6237;&#x7AEF;&#x8FDE;&#x63A5;
        int clientfd = accept(listenfd, (struct sockaddr *)&amp;clientaddr, &amp;clientaddrlen);
        if (clientfd != -1)
        {             
            char recvBuf[32] = {0};
            //5. &#x4ECE;&#x5BA2;&#x6237;&#x7AEF;&#x63A5;&#x53D7;&#x6570;&#x636E;
            int ret = recv(clientfd, recvBuf, 32, 0);
            if (ret &gt; 0) 
            {
                std::cout &lt;&lt; &quot;recv data from client, data: &quot; &lt;&lt; recvBuf &lt;&lt; std::endl;
                //6. &#x5C06;&#x6536;&#x5230;&#x7684;&#x6570;&#x636E;&#x539F;&#x5C01;&#x4E0D;&#x52A8;&#x5730;&#x53D1;&#x7ED9;&#x5BA2;&#x6237;&#x7AEF;
                ret = send(clientfd, recvBuf, strlen(recvBuf), 0);
                if (ret != strlen(recvBuf))
                    std::cout &lt;&lt; &quot;send data error.&quot; &lt;&lt; std::endl;

                std::cout &lt;&lt; &quot;send data to client successfully, data: &quot; &lt;&lt; recvBuf &lt;&lt; std::endl;
            } 
            else 
            {
                std::cout &lt;&lt; &quot;recv data error.&quot; &lt;&lt; std::endl;
            }

            //close(clientfd);
            clientfds.push_back(clientfd);
        }
    }

    //7.&#x5173;&#x95ED;&#x4FA6;&#x542C;socket
    close(listenfd);

    return 0;
}
</code></pre><p>&#x4FEE;&#x6539;&#x540E;&#x7684;&#x5BA2;&#x6237;&#x7AEF;&#x4EE3;&#x7801;&#x5982;&#x4E0B;&#xFF1A;</p>
<pre class="language-"><code>/**
 * TCP&#x5BA2;&#x6237;&#x7AEF;&#x901A;&#x4FE1;&#x57FA;&#x672C;&#x6D41;&#x7A0B;
 * zhangyl 2018.12.13
 */
#include &lt;sys/types.h&gt; 
#include &lt;sys/socket.h&gt;
#include &lt;arpa/inet.h&gt;
#include <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>unistd.h</span><span class="token punctuation">&gt;</span></span>
#include <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>iostream</span><span class="token punctuation">&gt;</span></span>
#include <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>string.h</span><span class="token punctuation">&gt;</span></span>

#define SERVER_ADDRESS &quot;127.0.0.1&quot;
#define SERVER_PORT     3000
#define SEND_DATA       &quot;helloworld&quot;

int main(int argc, char* argv[])
{
    //1.&#x521B;&#x5EFA;&#x4E00;&#x4E2A;socket
    int clientfd = socket(AF_INET, SOCK_STREAM, 0);
    if (clientfd == -1)
    {
        std::cout &lt;&lt; &quot;create client socket error.&quot; &lt;&lt; std::endl;
        return -1;
    }

    //2.&#x8FDE;&#x63A5;&#x670D;&#x52A1;&#x5668;
    struct sockaddr_in serveraddr;
    serveraddr.sin_family = AF_INET;
    serveraddr.sin_addr.s_addr = inet_addr(SERVER_ADDRESS);
    serveraddr.sin_port = htons(SERVER_PORT);
    if (connect(clientfd, (struct sockaddr *)&amp;serveraddr, sizeof(serveraddr)) == -1)
    {
        std::cout &lt;&lt; &quot;connect socket error.&quot; &lt;&lt; std::endl;
        return -1;
    }

    //3. &#x5411;&#x670D;&#x52A1;&#x5668;&#x53D1;&#x9001;&#x6570;&#x636E;
    int ret = send(clientfd, SEND_DATA, strlen(SEND_DATA), 0);
    if (ret != strlen(SEND_DATA))
    {
        std::cout &lt;&lt; &quot;send data error.&quot; &lt;&lt; std::endl;
        return -1;
    }

    std::cout &lt;&lt; &quot;send data successfully, data: &quot; &lt;&lt; SEND_DATA &lt;&lt; std::endl;

    //4. &#x4ECE;&#x5BA2;&#x6237;&#x7AEF;&#x6536;&#x53D6;&#x6570;&#x636E;
    char recvBuf[32] = {0};
    ret = recv(clientfd, recvBuf, 32, 0);
    if (ret &gt; 0) 
    {
        std::cout &lt;&lt; &quot;recv data successfully, data: &quot; &lt;&lt; recvBuf &lt;&lt; std::endl;
    } 
    else 
    {
        std::cout &lt;&lt; &quot;recv data error, data: &quot; &lt;&lt; recvBuf &lt;&lt; std::endl;
    }

    //5. &#x5173;&#x95ED;socket
    //close(clientfd);
    //&#x8FD9;&#x91CC;&#x4EC5;&#x4EC5;&#x662F;&#x4E3A;&#x4E86;&#x8BA9;&#x5BA2;&#x6237;&#x7AEF;&#x7A0B;&#x5E8F;&#x4E0D;&#x9000;&#x51FA;
    while (true) 
    {
        sleep(3);
    }

    return 0;
}
</code></pre><p>&#x5C06;&#x7A0B;&#x5E8F;&#x7F16;&#x8BD1;&#x597D;&#x540E;&#xFF08;&#x7F16;&#x8BD1;&#x65B9;&#x6CD5;&#x548C;&#x4E0A;&#x6587;&#x4E00;&#x6837;&#xFF09;&#xFF0C;&#x6211;&#x4EEC;&#x5148;&#x542F;&#x52A8;server&#xFF0C;&#x518D;&#x542F;&#x52A8;&#x4E09;&#x4E2A;&#x5BA2;&#x6237;&#x7AEF;&#x3002;&#x7136;&#x540E;&#x901A;&#x8FC7; <strong>lsof</strong> &#x547D;&#x4EE4;&#x67E5;&#x770B;&#x5F53;&#x524D;&#x673A;&#x5668;&#x4E0A;&#x7684; TCP &#x8FDE;&#x63A5;&#x4FE1;&#x606F;&#xFF0C;&#x4E3A;&#x4E86;&#x66F4;&#x6E05;&#x695A;&#x5730;&#x663E;&#x793A;&#x7ED3;&#x679C;&#xFF0C;&#x5DF2;&#x7ECF;&#x5C06;&#x4E0D;&#x76F8;&#x5173;&#x7684;&#x8FDE;&#x63A5;&#x4FE1;&#x606F;&#x53BB;&#x6389;&#x4E86;&#xFF0C;&#x7ED3;&#x679C;&#x5982;&#x4E0B;&#x6240;&#x793A;&#xFF1A;</p>
<pre class="language-"><code>[root@localhost ~]# lsof -i -Pn
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
server   1445 root    3u  IPv4  21568      0t0  TCP *:3000 (LISTEN)
server   1445 root    4u  IPv4  21569      0t0  TCP 127.0.0.1:3000-&gt;127.0.0.1:40818 (ESTABLISHED)
server   1445 root    5u  IPv4  21570      0t0  TCP 127.0.0.1:3000-&gt;127.0.0.1:40820 (ESTABLISHED)
server   1445 root    6u  IPv4  21038      0t0  TCP 127.0.0.1:3000-&gt;127.0.0.1:40822 (ESTABLISHED)
client   1447 root    3u  IPv4  21037      0t0  TCP 127.0.0.1:40818-&gt;127.0.0.1:3000 (ESTABLISHED)
client   1448 root    3u  IPv4  21571      0t0  TCP 127.0.0.1:40820-&gt;127.0.0.1:3000 (ESTABLISHED)
client   1449 root    3u  IPv4  21572      0t0  TCP 127.0.0.1:40822-&gt;127.0.0.1:3000 (ESTABLISHED)
</code></pre><p>&#x4E0A;&#x9762;&#x7684;&#x7ED3;&#x679C;&#x663E;&#x793A;&#xFF0C;<strong>server</strong> &#x8FDB;&#x7A0B;&#xFF08;&#x8FDB;&#x7A0B; ID &#x662F; <strong>1445</strong>&#xFF09;&#x5728; <strong>3000</strong> &#x7AEF;&#x53E3;&#x5F00;&#x542F;&#x4FA6;&#x542C;&#xFF0C;&#x6709;&#x4E09;&#x4E2A; <strong>client</strong> &#x8FDB;&#x7A0B;&#xFF08;&#x8FDB;&#x7A0B; ID &#x5206;&#x522B;&#x662F;<strong>1447</strong>&#x3001;<strong>1448</strong>&#x3001;<strong>1449</strong>&#xFF09;&#x5206;&#x522B;&#x901A;&#x8FC7;&#x7AEF;&#x53E3;&#x53F7; <strong>40818</strong>&#x3001;<strong>40820</strong>&#x3001;<strong>40822</strong> &#x8FDE;&#x5230; <strong>server</strong> &#x8FDB;&#x7A0B;&#x4E0A;&#x7684;&#xFF0C;&#x4F5C;&#x4E3A;&#x5BA2;&#x6237;&#x7AEF;&#x7684;&#x4E00;&#x65B9;&#xFF0C;&#x7AEF;&#x53E3;&#x53F7;&#x662F;&#x7CFB;&#x7EDF;&#x968F;&#x673A;&#x5206;&#x914D;&#x7684;&#x3002;</p>
<ul>
<li><p><strong>&#x60C5;&#x5F62;&#x4E8C;&#xFF1A;&#x5BA2;&#x6237;&#x7AEF;&#x7ED1;&#x5B9A;&#x7AEF;&#x53E3;&#x53F7; 0</strong></p>
<p>&#x670D;&#x52A1;&#x5668;&#x7AEF;&#x4EE3;&#x7801;&#x4FDD;&#x6301;&#x4E0D;&#x53D8;&#xFF0C;&#x6211;&#x4EEC;&#x4FEE;&#x6539;&#x4E0B;&#x5BA2;&#x6237;&#x7AEF;&#x4EE3;&#x7801;&#xFF1A;</p>
<pre class="language-"><code>/**
 * TCP&#x670D;&#x52A1;&#x5668;&#x901A;&#x4FE1;&#x57FA;&#x672C;&#x6D41;&#x7A0B;
 * zhangyl 2018.12.13
 */
</code></pre><pre class="language-"><code>#include &lt;sys/types.h&gt; 
#include &lt;sys/socket.h&gt;
#include &lt;arpa/inet.h&gt;
#include <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>unistd.h</span><span class="token punctuation">&gt;</span></span>
#include <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>iostream</span><span class="token punctuation">&gt;</span></span>
#include <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>string.h</span><span class="token punctuation">&gt;</span></span>

#define SERVER_ADDRESS &quot;127.0.0.1&quot;
#define SERVER_PORT     3000
#define SEND_DATA       &quot;helloworld&quot;

int main(int argc, char* argv[])
{
  //1.&#x521B;&#x5EFA;&#x4E00;&#x4E2A;socket
  int clientfd = socket(AF_INET, SOCK_STREAM, 0);
  if (clientfd == -1)
  {
      std::cout &lt;&lt; &quot;create client socket error.&quot; &lt;&lt; std::endl;
      return -1;
  }

  struct sockaddr_in bindaddr;
  bindaddr.sin_family = AF_INET;
  bindaddr.sin_addr.s_addr = htonl(INADDR_ANY);
  //&#x5C06;socket&#x7ED1;&#x5B9A;&#x5230;0&#x53F7;&#x7AEF;&#x53E3;&#x4E0A;&#x53BB;
  bindaddr.sin_port = htons(0);
  if (bind(clientfd, (struct sockaddr *)&amp;bindaddr, sizeof(bindaddr)) == -1)
  {
      std::cout &lt;&lt; &quot;bind socket error.&quot; &lt;&lt; std::endl;
      return -1;
  }

  //2.&#x8FDE;&#x63A5;&#x670D;&#x52A1;&#x5668;
  struct sockaddr_in serveraddr;
  serveraddr.sin_family = AF_INET;
  serveraddr.sin_addr.s_addr = inet_addr(SERVER_ADDRESS);
  serveraddr.sin_port = htons(SERVER_PORT);
  if (connect(clientfd, (struct sockaddr *)&amp;serveraddr, sizeof(serveraddr)) == -1)
  {
      std::cout &lt;&lt; &quot;connect socket error.&quot; &lt;&lt; std::endl;
      return -1;
  }

  //3. &#x5411;&#x670D;&#x52A1;&#x5668;&#x53D1;&#x9001;&#x6570;&#x636E;
  int ret = send(clientfd, SEND_DATA, strlen(SEND_DATA), 0);
  if (ret != strlen(SEND_DATA))
  {
      std::cout &lt;&lt; &quot;send data error.&quot; &lt;&lt; std::endl;
      return -1;
  }

  std::cout &lt;&lt; &quot;send data successfully, data: &quot; &lt;&lt; SEND_DATA &lt;&lt; std::endl;

  //4. &#x4ECE;&#x5BA2;&#x6237;&#x7AEF;&#x6536;&#x53D6;&#x6570;&#x636E;
  char recvBuf[32] = {0};
  ret = recv(clientfd, recvBuf, 32, 0);
  if (ret &gt; 0) 
  {
      std::cout &lt;&lt; &quot;recv data successfully, data: &quot; &lt;&lt; recvBuf &lt;&lt; std::endl;
  } 
  else 
  {
      std::cout &lt;&lt; &quot;recv data error, data: &quot; &lt;&lt; recvBuf &lt;&lt; std::endl;
  }

  //5. &#x5173;&#x95ED;socket
  //close(clientfd);
  //&#x8FD9;&#x91CC;&#x4EC5;&#x4EC5;&#x662F;&#x4E3A;&#x4E86;&#x8BA9;&#x5BA2;&#x6237;&#x7AEF;&#x7A0B;&#x5E8F;&#x4E0D;&#x9000;&#x51FA;
  while (true) 
  {
      sleep(3);
  }

  return 0;
}
</code></pre><p>&#x6211;&#x4EEC;&#x518D;&#x6B21;&#x7F16;&#x8BD1;&#x5BA2;&#x6237;&#x7AEF;&#x7A0B;&#x5E8F;&#xFF0C;&#x5E76;&#x542F;&#x52A8;&#x4E09;&#x4E2A; <strong>client</strong> &#x8FDB;&#x7A0B;&#xFF0C;&#x7136;&#x540E;&#x7528; <strong>lsof</strong> &#x547D;&#x4EE4;&#x67E5;&#x770B;&#x673A;&#x5668;&#x4E0A;&#x7684; TCP &#x8FDE;&#x63A5;&#x60C5;&#x51B5;&#xFF0C;&#x7ED3;&#x679C;&#x5982;&#x4E0B;&#x6240;&#x793A;&#xFF1A;</p>
<pre class="language-"><code>[root@localhost ~]# lsof -i -Pn
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
server   1593 root    3u  IPv4  21807      0t0  TCP *:3000 (LISTEN)
server   1593 root    4u  IPv4  21808      0t0  TCP 127.0.0.1:3000-&gt;127.0.0.1:44220 (ESTABLISHED)
server   1593 root    5u  IPv4  19311      0t0  TCP 127.0.0.1:3000-&gt;127.0.0.1:38990 (ESTABLISHED)
server   1593 root    6u  IPv4  21234      0t0  TCP 127.0.0.1:3000-&gt;127.0.0.1:42365 (ESTABLISHED)
client   1595 root    3u  IPv4  22626      0t0  TCP 127.0.0.1:44220-&gt;127.0.0.1:3000 (ESTABLISHED)
client   1611 root    3u  IPv4  21835      0t0  TCP 127.0.0.1:38990-&gt;127.0.0.1:3000 (ESTABLISHED)
client   1627 root    3u  IPv4  21239      0t0  TCP 127.0.0.1:42365-&gt;127.0.0.1:3000 (ESTABLISHED)
</code></pre><p>&#x901A;&#x8FC7;&#x4E0A;&#x9762;&#x7684;&#x7ED3;&#x679C;&#xFF0C;&#x6211;&#x4EEC;&#x53D1;&#x73B0;&#x4E09;&#x4E2A; <strong>client</strong> &#x8FDB;&#x7A0B;&#x4F7F;&#x7528;&#x7684;&#x7AEF;&#x53E3;&#x53F7;&#x4ECD;&#x7136;&#x662F;&#x7CFB;&#x7EDF;&#x968F;&#x673A;&#x5206;&#x914D;&#x7684;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x8BF4;&#x7ED1;&#x5B9A; <strong>0</strong> &#x53F7;&#x7AEF;&#x53E3;&#x548C;&#x6CA1;&#x6709;&#x7ED1;&#x5B9A;&#x6548;&#x679C;&#x662F;&#x4E00;&#x6837;&#x7684;&#x3002;</p>
</li>
<li><p><strong>&#x60C5;&#x5F62;&#x4E09;&#xFF1A;&#x5BA2;&#x6237;&#x7AEF;&#x7ED1;&#x5B9A;&#x4E00;&#x4E2A;&#x56FA;&#x5B9A;&#x7AEF;&#x53E3;</strong></p>
<p>&#x6211;&#x4EEC;&#x8FD9;&#x91CC;&#x4F7F;&#x7528; <strong>20000</strong> &#x7AEF;&#x53E3;&#xFF0C;&#x5F53;&#x7136;&#x8BFB;&#x8005;&#x53EF;&#x4EE5;&#x6839;&#x636E;&#x81EA;&#x5DF1;&#x7684;&#x559C;&#x597D;&#x9009;&#x62E9;&#xFF0C;&#x53EA;&#x8981;&#x4FDD;&#x8BC1;&#x6240;&#x9009;&#x62E9;&#x7684;&#x7AEF;&#x53E3;&#x53F7;&#x5F53;&#x524D;&#x6CA1;&#x6709;&#x88AB;&#x5176;&#x4ED6;&#x7A0B;&#x5E8F;&#x5360;&#x7528;&#x5373;&#x53EF;&#xFF0C;&#x670D;&#x52A1;&#x5668;&#x4EE3;&#x7801;&#x4FDD;&#x6301;&#x4E0D;&#x53D8;&#xFF0C;&#x5BA2;&#x6237;&#x7AEF;&#x7ED1;&#x5B9A;&#x4EE3;&#x7801;&#x4E2D;&#x7684;&#x7AEF;&#x53E3;&#x53F7;&#x4ECE; <strong>0</strong> &#x6539;&#x6210; <strong>20000</strong>&#x3002;&#x8FD9;&#x91CC;&#x4E3A;&#x4E86;&#x8282;&#x7701;&#x7BC7;&#x5E45;&#xFF0C;&#x53EA;&#x8D34;&#x51FA;&#x4FEE;&#x6539;&#x5904;&#x7684;&#x4EE3;&#x7801;&#xFF1A;</p>
<pre class="language-"><code>struct sockaddr_in bindaddr;
bindaddr.sin_family = AF_INET;
bindaddr.sin_addr.s_addr = htonl(INADDR_ANY);
//&#x5C06;socket&#x7ED1;&#x5B9A;&#x5230;20000&#x53F7;&#x7AEF;&#x53E3;&#x4E0A;&#x53BB;
bindaddr.sin_port = htons(20000);
if (bind(clientfd, (struct sockaddr *)&amp;bindaddr, sizeof(bindaddr)) == -1)
{
    std::cout &lt;&lt; &quot;bind socket error.&quot; &lt;&lt; std::endl;
    return -1;
}
</code></pre><p>&#x518D;&#x6B21;&#x91CD;&#x65B0;&#x7F16;&#x8BD1;&#x7A0B;&#x5E8F;&#xFF0C;&#x5148;&#x542F;&#x52A8;&#x4E00;&#x4E2A;&#x5BA2;&#x6237;&#x7AEF;&#x540E;&#xFF0C;&#x6211;&#x4EEC;&#x770B;&#x5230;&#x6B64;&#x65F6;&#x7684; TCP &#x8FDE;&#x63A5;&#x72B6;&#x6001;&#xFF1A;</p>
<pre class="language-"><code>[root@localhost testsocket]# lsof -i -Pn
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
server   1676 root    3u  IPv4  21933      0t0  TCP *:3000 (LISTEN)
server   1676 root    4u  IPv4  21934      0t0  TCP 127.0.0.1:3000-&gt;127.0.0.1:20000 (ESTABLISHED)
client   1678 root    3u  IPv4  21336      0t0  TCP 127.0.0.1:20000-&gt;127.0.0.1:3000 (ESTABLISHED)
</code></pre><p>&#x901A;&#x8FC7;&#x4E0A;&#x9762;&#x7684;&#x7ED3;&#x679C;&#xFF0C;&#x6211;&#x4EEC;&#x53D1;&#x73B0; <strong>client</strong> &#x8FDB;&#x7A0B;&#x786E;&#x5B9E;&#x4F7F;&#x7528; <strong>20000</strong> &#x53F7;&#x7AEF;&#x53E3;&#x8FDE;&#x63A5;&#x5230; <strong>server</strong> &#x8FDB;&#x7A0B;&#x4E0A;&#x53BB;&#x4E86;&#x3002;&#x8FD9;&#x4E2A;&#x65F6;&#x5019;&#x5982;&#x679C;&#x6211;&#x4EEC;&#x518D;&#x5F00;&#x542F;&#x4E00;&#x4E2A; <strong>client</strong> &#x8FDB;&#x7A0B;&#xFF0C;&#x6211;&#x4EEC;&#x731C;&#x60F3;&#x7531;&#x4E8E;&#x7AEF;&#x53E3;&#x53F7; <strong>20000</strong> &#x5DF2;&#x7ECF;&#x88AB;&#x5360;&#x7528;&#xFF0C;&#x65B0;&#x542F;&#x52A8;&#x7684; <strong>client</strong> &#x4F1A;&#x7531;&#x4E8E;&#x8C03;&#x7528; <strong>bind</strong> &#x51FD;&#x6570;&#x51FA;&#x9519;&#x800C;&#x9000;&#x51FA;&#xFF0C;&#x6211;&#x4EEC;&#x5B9E;&#x9645;&#x9A8C;&#x8BC1;&#x4E00;&#x4E0B;&#xFF1A;</p>
<pre class="language-"><code>[root@localhost testsocket]# ./client 
bind socket error.
[root@localhost testsocket]#
</code></pre><p>&#x7ED3;&#x679C;&#x786E;&#x5B9E;&#x548C;&#x6211;&#x4EEC;&#x9884;&#x60F3;&#x7684;&#x4E00;&#x6837;&#x3002;</p>
</li>
</ul>
<p>&#x5728;&#x6280;&#x672F;&#x9762;&#x8BD5;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x6709;&#x65F6;&#x5019;&#x9762;&#x8BD5;&#x5B98;&#x4F1A;&#x95EE; TCP &#x7F51;&#x7EDC;&#x901A;&#x4FE1;&#x7684;&#x5BA2;&#x6237;&#x7AEF;&#x7A0B;&#x5E8F;&#x4E2D;&#x7684; socket &#x662F;&#x5426;&#x53EF;&#x4EE5;&#x8C03;&#x7528; bind &#x51FD;&#x6570;&#xFF0C;&#x76F8;&#x4FE1;&#x8BFB;&#x5230;&#x8FD9;&#x91CC;&#xFF0C;&#x806A;&#x660E;&#x7684;&#x8BFB;&#x8005;&#x5DF2;&#x7ECF;&#x6709;&#x7B54;&#x6848;&#x4E86;&#x3002;</p>
<p>&#x53E6;&#x5916;&#xFF0C;Linux &#x7684; <strong>nc</strong> &#x547D;&#x4EE4;&#x6709;&#x4E2A; <strong>-p</strong> &#x9009;&#x9879;&#xFF08;&#x5B57;&#x6BCD; <strong>p</strong> &#x662F;&#x5C0F;&#x5199;&#xFF09;&#xFF0C;&#x8FD9;&#x4E2A;&#x9009;&#x9879;&#x7684;&#x4F5C;&#x7528;&#x5C31;&#x662F; <strong>nc</strong> &#x5728;&#x6A21;&#x62DF;&#x5BA2;&#x6237;&#x7AEF;&#x7A0B;&#x5E8F;&#x65F6;&#xFF0C;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x6307;&#x5B9A;&#x7AEF;&#x53E3;&#x53F7;&#x8FDE;&#x63A5;&#x5230;&#x670D;&#x52A1;&#x5668;&#x7A0B;&#x5E8F;&#x4E0A;&#x53BB;&#xFF0C;&#x5B9E;&#x73B0;&#x539F;&#x7406;&#x76F8;&#x4FE1;&#x8BFB;&#x8005;&#x4E5F;&#x660E;&#x767D;&#x4E86;&#x3002;&#x6211;&#x4EEC;&#x8FD8;&#x662F;&#x4EE5;&#x4E0A;&#x9762;&#x7684;&#x670D;&#x52A1;&#x5668;&#x7A0B;&#x5E8F;&#x4E3A;&#x4F8B;&#xFF0C;&#x8FD9;&#x4E2A;&#x6211;&#x4EEC;&#x4E0D;&#x7528;&#x6211;&#x4EEC;&#x7684; <strong>client</strong> &#x7A0B;&#x5E8F;&#xFF0C;&#x6539;&#x7528; <strong>nc</strong> &#x547D;&#x4EE4;&#x6765;&#x6A21;&#x62DF;&#x5BA2;&#x6237;&#x7AEF;&#x3002;&#x5728; <strong>shell</strong> &#x7EC8;&#x7AEF;&#x8F93;&#x5165;&#xFF1A;</p>
<pre class="language-"><code>[root@localhost testsocket]# nc -v -p 9999 127.0.0.1 3000
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connected to 127.0.0.1:3000.
My name is zhangxf
My name is zhangxf
</code></pre><p><strong>-v</strong> &#x9009;&#x9879;&#x8868;&#x793A;&#x8F93;&#x51FA; <strong>nc</strong> &#x547D;&#x4EE4;&#x8FDE;&#x63A5;&#x7684;&#x8BE6;&#x7EC6;&#x4FE1;&#x606F;&#xFF0C;&#x8FD9;&#x91CC;&#x8FDE;&#x63A5;&#x6210;&#x529F;&#x4EE5;&#x540E;&#xFF0C;&#x4F1A;&#x8F93;&#x51FA;&#x201C;<strong>Ncat: Connected to 127.0.0.1:3000.</strong>&#x201D; &#x63D0;&#x793A;&#x5DF2;&#x7ECF;&#x8FDE;&#x63A5;&#x5230;&#x670D;&#x52A1;&#x5668;&#x7684; <strong>3000</strong> &#x7AEF;&#x53E3;&#x4E0A;&#x53BB;&#x4E86;&#x3002;</p>
<p><strong>-p</strong> &#x9009;&#x9879;&#x7684;&#x53C2;&#x6570;&#x503C;&#x662F; <strong>9999</strong> &#x8868;&#x793A;&#xFF0C;&#x6211;&#x4EEC;&#x8981;&#x6C42; <strong>nc</strong> &#x547D;&#x4EE4;&#x672C;&#x5730;&#x4EE5;&#x7AEF;&#x53E3;&#x53F7; <strong>9999</strong> &#x8FDE;&#x63A5;&#x670D;&#x52A1;&#x5668;&#xFF0C;&#x6CE8;&#x610F;&#x4E0D;&#x8981;&#x4E0E;&#x7AEF;&#x53E3;&#x53F7; <strong>3000</strong> &#x6DF7;&#x6DC6;&#xFF0C;<strong>3000</strong> &#x662F;&#x670D;&#x52A1;&#x5668;&#x7684;&#x4FA6;&#x542C;&#x7AEF;&#x53E3;&#x53F7;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x6211;&#x4EEC;&#x7684;&#x8FDE;&#x63A5;&#x7684;&#x76EE;&#x6807;&#x7AEF;&#x53E3;&#x53F7;&#xFF0C;<strong>9999</strong> &#x662F;&#x6211;&#x4EEC;&#x5BA2;&#x6237;&#x7AEF;&#x4F7F;&#x7528;&#x7684;&#x7AEF;&#x53E3;&#x53F7;&#x3002;&#x6211;&#x4EEC;&#x7528; <strong>lsof</strong> &#x547D;&#x4EE4;&#x6765;&#x9A8C;&#x8BC1;&#x4E00;&#x4E0B;&#x6211;&#x4EEC;&#x7684; <strong>nc</strong> &#x547D;&#x4EE4;&#x662F;&#x5426;&#x786E;&#x5B9E;&#x4EE5; <strong>9999</strong> &#x7AEF;&#x53E3;&#x53F7;&#x8FDE;&#x63A5;&#x5230; <strong>server</strong> &#x8FDB;&#x7A0B;&#x4E0A;&#x53BB;&#x4E86;&#x3002;</p>
<pre class="language-"><code>[root@localhost testsocket]# lsof -i -Pn
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
server   1676 root    3u  IPv4  21933      0t0  TCP *:3000 (LISTEN)
server   1676 root    7u  IPv4  22405      0t0  TCP 127.0.0.1:3000-&gt;127.0.0.1:9999 (ESTABLISHED)
nc       2005 root    3u  IPv4  22408      0t0  TCP 127.0.0.1:9999-&gt;127.0.0.1:3000 (ESTABLISHED)
</code></pre><p>&#x7ED3;&#x679C;&#x786E;&#x5B9E;&#x5982;&#x6211;&#x4EEC;&#x671F;&#x671B;&#x7684;&#x4E00;&#x81F4;&#x3002;</p>
<p>&#x5F53;&#x7136;&#xFF0C;&#x6211;&#x4EEC;&#x7528; <strong>nc</strong> &#x547D;&#x4EE4;&#x8FDE;&#x63A5;&#x4E0A; <strong>server</strong> &#x8FDB;&#x7A0B;&#x4EE5;&#x540E;&#xFF0C;&#x6211;&#x4EEC;&#x8FD8;&#x7ED9;&#x670D;&#x52A1;&#x5668;&#x53D1;&#x4E86;&#x4E00;&#x6761;&#x6D88;&#x606F;&quot;<strong>My name is zhangxf</strong>&quot;&#xFF0C;<strong>server</strong> &#x7A0B;&#x5E8F;&#x6536;&#x5230;&#x6D88;&#x606F;&#x540E;&#x628A;&#x8FD9;&#x6761;&#x6D88;&#x606F;&#x539F;&#x5C01;&#x4E0D;&#x52A8;&#x5730;&#x8FD4;&#x8FD8;&#x7ED9;&#x6211;&#x4EEC;&#xFF0C;&#x4EE5;&#x4E0B;&#x662F; <strong>server</strong> &#x7AEF;&#x8FD0;&#x884C;&#x7ED3;&#x679C;&#xFF1A;</p>
<pre class="language-"><code>[root@localhost testsocket]# ./server   
recv data from client, data: My name is zhangxf

send data to client successfully, data: My name is zhangxf
</code></pre><p>&#x5173;&#x4E8E; <strong>lsof</strong> &#x548C; <strong>nc</strong> &#x547D;&#x4EE4;&#x6211;&#x4EEC;&#x4F1A;&#x5728;&#x540E;&#x9762;&#x7684;&#x7CFB;&#x5217;&#x6587;&#x7AE0;&#x4E2D;&#x8BE6;&#x7EC6;&#x8BB2;&#x89E3;&#x3002;</p>
<footer class="page-footer"><span class="copyright">&#x5982;&#x9700;&#x4E0B;&#x8F7D;&#x672C;&#x7AD9;&#x5168;&#x90E8;&#x6280;&#x672F;&#x6587;&#x7AE0;&#xFF0C;&#x53EF;&#x4EE5;&#x5728;&#x3010;&#x9AD8;&#x6027;&#x80FD;&#x670D;&#x52A1;&#x5668;&#x5F00;&#x53D1;&#x3011;&#x516C;&#x4F17;&#x53F7;&#x56DE;&#x590D;&#x5173;&#x952E;&#x5B57;&#x201C;&#x6587;&#x7AE0;&#x4E0B;&#x8F7D;&#x201D;&#x5373;&#x53EF;&#x3002;</span><span class="footer-modification">&#x6700;&#x8FD1;&#x66F4;&#x65B0;&#x65F6;&#x95F4;&#xFF1A;
2020-09-15 23:47:48
</span></footer>
<script>console.log("plugin-popup....");document.onclick = function(e){ e.target.tagName === "IMG" && window.open(e.target.src,e.target.src)}</script><style>img{cursor:pointer}</style>
						
					</section>
					
    </div>
    <div class="search-results">
        <div class="has-results">
            
            <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
            <ul class="search-results-list"></ul>
            
        </div>
        <div class="no-results">
            
            <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
            
        </div>
    </div>
</div>

				</div>
			</div>
			
		</div>

		
		
		<a href="./" class="navigation navigation-prev " aria-label="Previous page: 网络编程">
			<i class="fa fa-angle-left"></i>
		</a>
		
		
		<a href="connect函数在阻塞和非阻塞模式下的行为.html" class="navigation navigation-next " aria-label="Next page: connect 函数在阻塞和非阻塞模式下的行为">
			<i class="fa fa-angle-right"></i>
		</a>
		
		
		
	</div>
	<script>
		var gitbook = gitbook || [];
		gitbook.push(function() {
			gitbook.page.hasChanged({"page":{"title":"bind 函数重难点解析","level":"2.1.1","depth":2,"next":{"title":"connect 函数在阻塞和非阻塞模式下的行为","level":"2.1.2","depth":2,"path":"articles/网络编程/connect函数在阻塞和非阻塞模式下的行为.md","ref":"articles/网络编程/connect函数在阻塞和非阻塞模式下的行为.md","articles":[]},"previous":{"title":"网络编程","level":"2.1","depth":1,"path":"articles/网络编程/README.md","ref":"articles/网络编程/README.md","articles":[{"title":"bind 函数重难点解析","level":"2.1.1","depth":2,"path":"articles/网络编程/bind函数重难点解析.md","ref":"articles/网络编程/bind函数重难点解析.md","articles":[]},{"title":"connect 函数在阻塞和非阻塞模式下的行为","level":"2.1.2","depth":2,"path":"articles/网络编程/connect函数在阻塞和非阻塞模式下的行为.md","ref":"articles/网络编程/connect函数在阻塞和非阻塞模式下的行为.md","articles":[]},{"title":"select 函数重难点解析","level":"2.1.3","depth":2,"path":"articles/网络编程/select函数重难点解析.md","ref":"articles/网络编程/select函数重难点解析.md","articles":[]},{"title":"Linux epoll 模型（含LT 模式和 ET 模式详解）","level":"2.1.4","depth":2,"path":"articles/网络编程/Linuxepoll模型（含LT模式和ET模式详解）.md","ref":"articles/网络编程/Linuxepoll模型（含LT模式和ET模式详解）.md","articles":[]},{"title":"socket 的阻塞模式和非阻塞模式","level":"2.1.5","depth":2,"path":"articles/网络编程/socket的阻塞模式和非阻塞模式.md","ref":"articles/网络编程/socket的阻塞模式和非阻塞模式.md","articles":[]},{"title":"非阻塞模式下 send 和 recv 函数的返回值","level":"2.1.6","depth":2,"path":"articles/网络编程/非阻塞模式下send和recv函数的返回值.md","ref":"articles/网络编程/非阻塞模式下send和recv函数的返回值.md","articles":[]},{"title":"服务器开发通信协议设计介绍","level":"2.1.7","depth":2,"path":"articles/网络编程/服务器开发通信协议设计介绍.md","ref":"articles/网络编程/服务器开发通信协议设计介绍.md","articles":[]},{"title":"TCP 协议如何解决粘包、半包问题","level":"2.1.8","depth":2,"path":"articles/网络编程/TCP协议如何解决粘包、半包问题.md","ref":"articles/网络编程/TCP协议如何解决粘包、半包问题.md","articles":[]},{"title":"网络通信中收发数据的正确姿势","level":"2.1.9","depth":2,"path":"articles/网络编程/网络通信中收发数据的正确姿势.md","ref":"articles/网络编程/网络通信中收发数据的正确姿势.md","articles":[]},{"title":"服务器端发数据时，如果对端一直不收，怎么办？","level":"2.1.10","depth":2,"path":"articles/网络编程/服务器端发数据时，如果对端一直不收，怎么办？.md","ref":"articles/网络编程/服务器端发数据时，如果对端一直不收，怎么办？.md","articles":[]}]},"dir":"ltr"},"config":{"plugins":["chapter-fold","-lunr","-search","search-pro","splitter","popup","back-to-top-button","hide-element","prism","-highlight","tbfed-pagefooter","code","anchor-navigation-ex","theme-fexa","livereload"],"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"tbfed-pagefooter":{"copyright":"如需下载本站全部技术文章，可以在【高性能服务器开发】公众号回复关键字“文章下载”即可。","modify_label":"最近更新时间：","modify_format":"YYYY-MM-DD HH:mm:ss"},"chapter-fold":{},"prism":{},"livereload":{},"splitter":{},"search-pro":{},"popup":{},"theme-fexa":{"search-placeholder":"输入关键字搜索","logo":"./logo.png","favicon":"./favicon.ico"},"code":{"copyButtons":true},"hide-element":{"elements":[".gitbook-link"]},"fontsettings":{"theme":"white","family":"sans","size":2},"anchor-navigation-ex":{"showLevel":false,"associatedWithSummary":true,"mode":"float","showGoTop":false,"printLog":false,"multipleH1":true,"float":{"floatIcon":"fa fa-navicon","showLevelIcon":false,"level1Icon":"","level2Icon":"","level3Icon":""},"pageTop":{"showLevelIcon":false,"level1Icon":"","level2Icon":"","level3Icon":""}},"back-to-top-button":{},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","author":"easy_coder","pdf":{"pageBreaksBefore":"/","headerTemplate":null,"paperSize":"a4","margin":{"right":62,"left":62,"top":36,"bottom":36},"fontSize":12,"fontFamily":"Arial","footerTemplate":null,"chapterMark":"pagebreak","pageNumbers":false},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"isbn":"","variables":{},"title":"高性能服务器开发 技术专栏","links":{},"gitbook":"*","description":"","theme-default":{"showLevel":true},"extension":null},"file":{"path":"articles/网络编程/bind函数重难点解析.md","mtime":"2020-09-15T15:47:48.009Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2020-10-09T15:31:57.905Z"},"basePath":"../..","book":{"language":""}});
		});
	</script>
</div>

        
    <script src="../../gitbook/gitbook.js"></script>
    <script src="../../gitbook/theme.js"></script>
    
        
        <script src="../../gitbook/gitbook-plugin-chapter-fold/chapter-fold.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-search-pro/jquery.mark.min.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-search-pro/search.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-splitter/splitter.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-back-to-top-button/plugin.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-hide-element/plugin.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-code/plugin.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-livereload/plugin.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-sharing/buttons.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-theme-fexa/fexa.js"></script>
        
    

    </body>
</html>

